﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntGuayasSLA.BL.Archivos.Pdf;
using Ext.Net;
using System.Xml.Linq;
using EntGuayasSLA.BL;
using EntGuayasSLA.BL.Listas;

namespace EGuayas.Web.Licenciamiento
{
    public partial class pgDetailXml : pgBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            { 
                Expediente expObjUpdate = Expediente.GetEditableRoot(Guid.Parse(Request["id"]));
                string filePath = GenerarXml(expObjUpdate);
                var hostLink = ConfigurationManager.AppSettings.Get("Url");
                string urlLink = filePath.Replace("~", hostLink);

                panelShow.Loader.Url  = urlLink;
                panelShow.Loader.Mode = LoadMode.Frame;
                panelShow.LoadContent();   
                    

            }
            catch (Exception ex)
            {               
                Response.Clear();
                Response.Write("<center><p>Archivo No encontrado</p></center>");
                RegistrarLog(ex);
            }
        }



        private string GenerarXml(Expediente expObjUpdate)
        {
            XDocument dcXML = new XDocument(
            new XDeclaration("1.0", "utf-8", "yes"),
            new XComment("Expediente " + expObjUpdate.Nombre),
            new XProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"tpl.xsl\""));

            XElement rootInfo = new XElement("Ficha");
            XAttribute attr = new XAttribute("Nombre", expObjUpdate.Nombre);
            rootInfo.Add(attr);
            attr = new XAttribute("Descripcion", expObjUpdate.Descripcion);
            rootInfo.Add(attr);

            XElement root = new XElement("Preguntas");
            CategoriaInformacionLista preguntas = CategoriaInformacionLista.GetCategoriaInformacionLista();
            int iCount = 1;
            foreach (CategoriaInformacionInfo pta in preguntas)
            {
                XElement nodo = new XElement("Pregunta");
                attr = new XAttribute("Enunciado", pta.SubCategoria);
                nodo.Add(attr);
                attr = new XAttribute("Tipo", pta.Tipo);
                nodo.Add(attr);
                attr = new XAttribute("Item", iCount.ToString());
                nodo.Add(attr);
                XElement hojaRootOpc = new XElement("Opciones");

                foreach (ItemInfo opcion in pta.Opciones)
                {
                    XElement hoja1 = new XElement("Opcion");
                    //opcion.Codigo, opcion.Nombre
                    attr = new XAttribute("Codigo", opcion.Codigo);
                    hoja1.Add(attr);
                    attr = new XAttribute("Nombre", opcion.Nombre);
                    hoja1.Add(attr);

                    //Respuesta item
                    CategoriaExpedienteInfo rta = expObjUpdate.Respuestas.FirstOrDefault(r => r.Codigo == opcion.Codigo);
                    if (rta != null)
                    {
                        attr = new XAttribute("Respuesta", "true");
                        hoja1.Add(attr);
                        attr = new XAttribute("Otro", rta.Otro);
                        hoja1.Add(attr);

                    }
                    else
                    {
                        attr = new XAttribute("Respuesta", "false");
                        hoja1.Add(attr);
                        attr = new XAttribute("Otro", "");
                        hoja1.Add(attr);

                    }
                    //
                    hojaRootOpc.Add(hoja1);

                }
                nodo.Add(hojaRootOpc);

                root.Add(nodo);
                iCount += 1;
            }
            rootInfo.Add(root);
            dcXML.Add(rootInfo);
            //@"c:\miXML.xml"
            string nameid = expObjUpdate.Id.ToString().Replace("-", "_");
            string ruta = string.Format("~/{0}/{1}.{2}", ConfigurationManager.AppSettings.Get("PathExpXml"), nameid.Trim(), "xml");
            string fileName = MapPath(ruta).Trim();
            dcXML.Save(fileName);
            return (ruta);
        }






    }
}